package com.unit3;

import java.util.regex.Matcher;
import java.util.regex.Pattern;

/**
 * @author 李琦 on 2021/8/5.
 * @version java version "16.0.1" 2021-04-20
 * 正则表达式有院子和元字符两部分组成
 * 原子:匹配的具体内容,可以用普通字符串或者同字符串作为原子
 * 元字符:匹配方式和规则
 * 常用原子正则表达式斜杠需要使用\\
 * \w       匹配任意字母苏子下划线
 * \d       匹配数字
 * \d+      匹配多个数字
 * \s       匹配空白字符(空格)
 * \s+      匹配多个空白字符(空格)
 * \W       和\w相反,匹配任意字母苏子下划线以外的字符
 * \D       匹配除了十进制以外的值
 * [0-9]    匹配一个0-9之间的数字
 * [a-z]    匹配小写英文字母
 * [A-Z]    匹配大写英文字母
 * [\u4e00-\u9fa5]匹配中文字符
 * .        匹配任意字符
 * *        零次或多次匹配前面的字符或子表达式
 * {n}      前面的原子出现n次
 * {n,}     前面的原子至少出现n次
 * {n,m}    前面的原子出现n到m次
 */
public class test19 {
    public static void main(String[] args) {

        String s="姓名:张三电话:13546254120爱15735175646好:篮球";
        String pat="(1\\d{10})";                              //
        Pattern p=Pattern.compile(pat);//获取Pattern对象,传入正则表达式
        Matcher m= p.matcher(s);//创建Matcher,传入字符串
        System.out.println(m.matches());//检测字符串是否匹配给定的正则表达式 .*1\\{10}.*
        System.out.println(m.find());//检测字符串中是否有给定的正则表达式    1\\{10}
        System.out.println(m.group());//获取分组内容(1\\d{10})

        //当需要获取多个电话号码时,用m.find()和m.group()配合使用
        //注释掉上边两句sout才可以正常显示
        while (m.find()) {
            System.out.println(m.group());
        }

    }
}
